إعداد حاوية لتطبيق لارافيل باستخدام دوكر كومبوز Docker Compose
مقدمة
في عالم تطوير البرمجيات الحديث، تزداد أهمية أدوات حاويات التطبيقات مثل دوكر (Docker) لتسهيل نشر التطبيقات بشكل موثوق ومتسق عبر بيئات مختلفة. من بين هذه الأدوات، دوكر كومبوز (Docker Compose) هو أداة قوية تُستخدم لتحديد وتشغيل تطبيقات متعددة الحاويات باستخدام ملف تكوين واحد. هذه التقنية ضرورية للمطورين الذين يعملون مع تطبيقات معقدة تعتمد على مكونات متعددة، مثل قاعدة بيانات وخوادم ويب وواجهات برمجة التطبيقات. من خلال هذا المقال، سنتناول كيفية إعداد حاوية لتطبيق لارافيل (Laravel) باستخدام دوكر كومبوز، خطوة بخطوة.
ما هو دوكر كومبوز؟
دوكر كومبوز هو أداة مفتوحة المصدر تتيح للمطورين إدارة تطبيقات متعددة الحاويات عبر ملف تكوين واحد. باستخدام ملف docker-compose.yml، يمكن للمطورين تحديد الحاويات اللازمة لتشغيل التطبيق، مثل الخوادم وقواعد البيانات، وربطها ببعضها البعض بسهولة. يوفر Docker Compose بيئة موحدة لتشغيل التطبيقات في بيئات التطوير والإنتاج، مما يضمن أن التطبيق يعمل بنفس الطريقة عبر جميع الأنظمة.
لماذا استخدام دوكر مع لارافيل؟
تطبيق لارافيل هو إطار عمل PHP شهير يستخدم لبناء تطبيقات ويب معقدة. باستخدام دوكر مع لارافيل، يمكننا الاستفادة من مزايا الحاويات مثل:
-
سهولة الإعداد: إعداد بيئة تطوير محلية متكاملة بنظام التشغيل الذي يعمل على تطبيق لارافيل من خلال حاويات دوكر.
-
الاستقلالية عن البيئة: يمكن لتطبيق لارافيل أن يعمل على أي نظام تشغيل بما في ذلك Windows، Linux، وmacOS دون الحاجة إلى تعديلات بيئية.
-
التوافق مع الأنظمة: يساعد دوكر في تكرار بيئة الإنتاج على جهاز المطور دون الحاجة إلى إعدادات معقدة.
المتطلبات الأساسية
قبل البدء في إعداد حاوية لتطبيق لارافيل باستخدام دوكر كومبوز، تأكد من أن لديك الأدوات التالية مثبتة على جهازك:
-
دوكر (Docker): يجب أن يكون لديك نسخة مثبتة من دوكر. يمكن تنزيل دوكر من الموقع الرسمي docker.com.
-
دوكر كومبوز (Docker Compose): بعد تثبيت دوكر، تأكد من تثبيت دوكر كومبوز أيضاً. عادة ما يتم تثبيته بشكل تلقائي مع دوكر.
-
تطبيق لارافيل: يجب أن يكون لديك تطبيق لارافيل جاهز للاستخدام. يمكنك إما إنشاء تطبيق جديد باستخدام الأمر
laravel new project-nameأو استخدام مشروع موجود.
خطوات إعداد حاوية لتطبيق لارافيل باستخدام دوكر كومبوز
1. إنشاء ملف docker-compose.yml
ملف docker-compose.yml هو ملف تكوين يُستخدم لتعريف الحاويات المختلفة التي يحتاجها التطبيق. في هذا الملف، سنقوم بتحديد الحاويات اللازمة لتشغيل تطبيق لارافيل، مثل الحاوية الخاصة بـ PHP، الحاوية الخاصة بـ Nginx، والحاوية الخاصة بقاعدة البيانات (MySQL أو PostgreSQL).
هيكل الملف:
yamlversion: '3'
services:
app:
image: php:8.0-fpm
container_name: laravel-app
volumes:
- ./src:/var/www/html
working_dir: /var/www/html
networks:
- laravel-network
depends_on:
- db
web:
image: nginx:alpine
container_name: laravel-web
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
networks:
- laravel-network
depends_on:
- app
db:
image: mysql:5.7
container_name: laravel-db
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: secret
volumes:
- db-data:/var/lib/mysql
networks:
- laravel-network
networks:
laravel-network:
driver: bridge
volumes:
db-data:
شرح محتويات الملف:
-
الخدمة
app: هذه الحاوية تحتوي على بيئة PHP باستخدام صورةphp:8.0-fpm. يتم ربط المجلدsrcالذي يحتوي على الكود الخاص بتطبيق لارافيل بمجلد/var/www/htmlداخل الحاوية. -
الخدمة
web: تحتوي هذه الحاوية على Nginx كخادم ويب. يتم ربط نفس المجلدsrcمع/var/www/htmlداخل الحاوية. كما يتم ربط ملف تكوين Nginx من جهاز المضيف إلى الحاوية. -
الخدمة
db: هذه الحاوية تحتوي على MySQL لتخزين بيانات التطبيق. يتم تحديد كلمة مرور الجذر وقاعدة البيانات واسم المستخدم باستخدام المتغيرات البيئية. -
الشبكة
laravel-network: تُستخدم هذه الشبكة لربط جميع الحاويات ببعضها البعض بحيث يمكنها التواصل. -
التخزين
db-data: يتم استخدام حجم لتخزين بيانات قاعدة البيانات بشكل دائم.
2. إعداد ملف تكوين Nginx
في هذا المثال، نحتاج إلى إعداد ملف تكوين لـ Nginx لتوجيه الطلبات إلى تطبيق لارافيل. أنشئ مجلدًا يسمى nginx في مجلد المشروع وداخل هذا المجلد أنشئ ملفًا يسمى default.conf.
nginxserver {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
3. بناء وتشغيل الحاويات باستخدام Docker Compose
بعد إعداد الملف docker-compose.yml وملف تكوين Nginx، يمكنك بناء الحاويات وتشغيلها باستخدام الأمر التالي:
bashdocker-compose up --build
سيقوم هذا الأمر بتنزيل الصور اللازمة (إذا لم تكن موجودة)، وبناء الحاويات، ثم تشغيلها. بعد إتمام العملية، يمكنك الوصول إلى تطبيق لارافيل من خلال المتصفح عبر العنوان http://localhost:8080.
4. إعداد تطبيق لارافيل داخل الحاوية
بمجرد تشغيل الحاويات، يجب عليك تنفيذ بعض الأوامر داخل الحاوية لتثبيت الاعتمادات الخاصة بتطبيق لارافيل. يمكنك القيام بذلك باستخدام الأمر التالي:
bashdocker-compose exec app bash
ستدخل إلى الحاوية الخاصة بـ PHP وتستطيع تنفيذ الأوامر التالية لتثبيت composer و التبعيات:
bashcomposer install
5. تكوين البيئة
تأكد من إعداد ملف .env لتطبيق لارافيل بحيث يتوافق مع إعدادات قاعدة البيانات في حاوية MySQL. يجب تعديل القيم في الملف ليتمكن تطبيق لارافيل من الاتصال بقاعدة البيانات:
dotenvDB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel DB_PASSWORD=secret
6. التحقق من التطبيق
بعد إتمام جميع الخطوات، يمكنك التحقق من التطبيق في متصفحك عبر الرابط http://localhost:8080. يجب أن ترى الصفحة الرئيسية لتطبيق لارافيل. كما يمكنك التفاعل مع التطبيق بشكل طبيعي عبر الواجهة.
الخاتمة
استخدام دوكر كومبوز لإنشاء حاويات لتطبيق لارافيل يوفر للمطورين بيئة تطوير موحدة ومرنة. من خلال إعداد الحاويات الخاصة بـ PHP وNginx وMySQL، يمكن للمطورين ضمان أن تطبيقاتهم ستعمل بنفس الطريقة عبر جميع البيئات. هذا الحل يجعل عملية التطوير والإنتاج أسهل وأسرع، ويقلل من المخاطر المرتبطة بتكرار بيئات العمل.

